//
//  main.c
//  指针与数组
//
//  Created by szcq on 2021/5/7.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    int ages[3] = {1, 3 , 5};
    printf("ages = %p\n", ages);//ages = 0x7ffeefbfef0c
    printf("&ages[0] = %p\n", &ages[0]);//&ages[0] = 0x7ffeefbfef0c
    
    // 由于数组的首元素的地址就是数组的地址, 所以定义一个指针指向数组其实就是定义一个指针指向数组的首元素, 所以数组的首元素是什么类型, 那么指向数组的指针就是什么类型
    int * p1 = &ages[0];
    int * p2 = ages;
    printf("p1 = %p\n", p1);//p1 = 0x7ffeefbfef0c
    printf("p2 = %p\n", p2);//p2 = 0x7ffeefbfef0c
    
    // 指针操作数组
    p1[2] = 90;//{1, 3 , 90};
    
    //通过指针 + 1 遍历数组
    printf("p1+0 = %d\n", *(p1 + 0));//1
    printf("p1+1 = %d\n", *(p1 + 1));//2
    printf("p1+2 = %d\n", *(p1 + 2));//90
    
    return 0;
}
